package com.xiaoyu.user.service;

/**
 * Comments：
 * Author：yuxin
 * Create Date：2017-04-26
 * Modified By：
 * Modified Date：
 * Why & What is modified：
 * Version：v1.0
 */
public class test {
    public static void main(String[] args) {
        //A可以到B，A可以到C                                        A-----B----D
        //B可以到A，到D，到C                                        \   /    /  \
        //C可以到A,到B,到D，到E                                      \ /   /     \
         //如右图                                                    C-----------E
        int A=0;
        int AB=3;
        int AC=4;
        int CB=1;
        int CD=4;
        int CE=3;
        int BD=5;
        int DE=1;
        int AD=0;//默认为0
        int AE=0;//默认为0
        if(AC<AB){//AC比AB短
            AD=AC+CD;//
            AE=AC+CE;
        if(AC+CB<AB){//AC+CB比AB小，也就是AB的最短路径为ACB；
            AB=AC+CB;
        }
        if((AB<=AD&&AB<AE)||(AB<AD&&AB<=AE)){//C旁边的B为最小值
            if(AB+BD<AD){
                AD=AB+BD;
            }
            if(AD+DE<AE){
                AE=AD+DE;
            }
        }
            if(AB>AD+BD){//B的最短路径
                AB=AD+BD;
            }
        else if(AD<AB&&AD<AE){//C旁边的D为最小值

            if(AE>AD+DE){
               AE=AD+DE;
            }
        }else if(AE<AB&&AE<AD){//C旁边的E为最小值    //分类有问题(1.E为最小值，2:三个有几个相等呢)
            if(AD>AE+DE){
               AD=AE+DE;
            }
            /*if(AE>AD+DE){//AD=AB<AE
                AE=AD+DE;
            }*/
        }else if(AB==AE&&AE>AD){
            AD= (AB+BD)>(AE+DE)?(AE+DE):(AB+BD);
            }
        }
        else {//AB比AC短或者一样
            System.out.println("AB小于等于AC");
            if(AB+CB<AC){//AB+CB比AC小，也就是AC的最短路径为ABC；
                AC=AB+CB;
            }
            AD=AB+BD;//11111
            if(AC>AD){//AC比AD大,往D走，
                if(AC>=AD+CD){//AC大于AD+CD，也就是AC的最短路径为A-B-D-C；    //加个等于号
                    AC=AD+CD;
                    AE=AD+DE;
                }
                if(AE>AC+CE){//A到E的最短路径为A-B-D-C-E；
                    AE=AC+CE;
                }
            }else {//AC比AD小，也就是往AC走；
                if(AD>AC+CD){//A到D的最短路径为A-B-C-D;
                    AD=AC+CD;
                }
                AE=AC+CE;
                if(AD+DE<AE){//A到E的最短路径为A-B-C-D-E；
                    AE=AD+DE;
                }
            }
        }
        System.out.println("AC="+AC);
        System.out.println("AB="+AB);
        System.out.println("AD="+AD);
        System.out.println("AE="+AE);










    }
}
